package 进阶阶段;

import java_code.druid.druidJDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate;

public class demo35JDBCTemplate {
    public static void main(String[] args) {
        //JDBC已经能够满足大部分用户最基本的需求，但是在使用JDBC时，必须自己来管理数据库资源如：获取PreparedStatement，设置SQL语句参数，关闭连接等步骤。
        //JdbcTemplate就是Spring对JDBC的封装，目的是使JDBC更加易于使用。JdbcTemplate是Spring的一部分。
        //JdbcTemplate处理了资源的建立和释放。他帮助我们避免一些常见的错误，比如忘了总要关闭连接。他运行核心的JDBC工作流，如Statement的建立和执行，而我们只需要提供SQL语句和提取结果。

        //JdbcTemplate(DataSource dataSource)
            //创建JdbcTemplate对象，方便执行SQL语句

        //execute(final String sql)
            //execute可以执行所有SQL语句，因为没有返回值，一般用于执行DDL语句。

        //update(final String sql)
            //用于执行`INSERT`、`UPDATE`、`DELETE`等DML语句。

        //queryForInt(String sql)
            //执行查询语句，返回一个int类型的值。比如查询pid等等一些int类型的字段值

        //queryForLong(String sql)
            //执行查询语句，返回一个long类型的数据。

        //queryForObject(String sql, Class<T> requiredType)
            //执行查询语句，返回一个指定类型的数据。

        //queryForMap(String sql)
            //执行查询语句，将一条记录放到一个Map中。这条数据的各个字段名作为map的key，各个字段的值作为map的value

        //queryForList(String sql)
            //执行查询语句，返回一个List集合，List中存放的是Map类型的数据。

        //query(String sql, RowMapper<T> rowMapper)
            //执行查询语句，返回一个List集合，List中存放的是RowMapper指定类型的数据。

        //query(String sql, RowMapper<T> rowMapper)
            //执行查询语句，返回一个List集合，List中存放的是RowMapper指定类型的数据。

        //public class BeanPropertyRowMapper<T> implements RowMapper<T>
            //BeanPropertyRowMapper类实现了RowMapper接口

        //使用别人写好的JdbcTemplate类的execute方法执行任意sql语句,由于没有返回值一般用于执行DDL语句,了解即可
        JdbcTemplate jdbcTemplate = new JdbcTemplate(druidJDBCUtils.getDataSource());
        // 创建表的SQL语句
//        String sql = "CREATE TABLE product("
//                + "pid INT PRIMARY KEY AUTO_INCREMENT,"
//                + "pname VARCHAR(20),"
//                + "price DOUBLE"
//                + ");";
//
//        jdbcTemplate.execute(sql);

        int i = jdbcTemplate.update("insert into product values (? , ? , ?)", 1 , "jqr", 10000);
        System.out.println("新增了" + i + "条");

        int i1 = jdbcTemplate.update("update product set pname = 'aaa' where pid = ?" , 1);
        System.out.println("修改了" + i1 + "条");

        int i2 = jdbcTemplate.update("delete from product where pid = ?" , 1);
        System.out.println("删除了" + i2 + "条1");
    }
}